home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 5 / Amiga Tools 5.iso / tools / developer-tools / guis / iedit / developer / generators / c / config.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-03-02  |  7.1 KB  |  255 lines

  1. /*
  2.     C source code created by Interface Editor
  3.     Copyright © 1994-1996 by Simone Tellini
  4.  
  5.     Generator:  C.generator 37.0 (16.1.96)
  6.  
  7.     Copy registered to :  Simone Tellini
  8.     Serial Number      : #0
  9. */
  10.  
  11.  
  12. /*
  13.     NOTE:   this has been generated by the C.generator, but then
  14.         I've modified it a little bit by hand, since the generator
  15.         is a shared library and thus cannot use global variables.
  16. */
  17.  
  18.  
  19. #include <exec/types.h>
  20. #include <exec/nodes.h>
  21. #include <intuition/intuition.h>
  22. #include <intuition/gadgetclass.h>
  23. #include <libraries/gadtools.h>
  24. #include <clib/exec_protos.h>
  25. #include <clib/intuition_protos.h>
  26. #include <clib/gadtools_protos.h>
  27. #include <clib/graphics_protos.h>
  28. #include <pragmas/exec_pragmas.h>
  29. #include <pragmas/intuition_pragmas.h>
  30. #include <pragmas/gadtools_pragmas.h>
  31. #include <pragmas/graphics_pragmas.h>
  32. #include <ctype.h>
  33. #include <string.h>
  34.  
  35. #include "DEV_IE:Include/IEditor.h"
  36. #include "DEV_IE:Generators/C/Config.h"
  37.  
  38. UWORD ConfGTypes[] = {
  39.     CHECKBOX_KIND,
  40.     CHECKBOX_KIND,
  41.     BUTTON_KIND,
  42.     BUTTON_KIND,
  43.     CHECKBOX_KIND,
  44.     CHECKBOX_KIND,
  45.     CHECKBOX_KIND,
  46.     CHECKBOX_KIND,
  47.     STRING_KIND,
  48.     CHECKBOX_KIND,
  49.     NULL };
  50.  
  51. struct TextAttr topaz8_065 = {
  52.     (STRPTR)"topaz.font", 8, 0x0, 0x41 };
  53.  
  54. struct NewGadget ConfNGad[] = {
  55.     122, 3, 26, 11, "Intui_Message", NULL, GD_Msg, NULL, NULL, (APTR)MsgClicked,
  56.     274, 3, 26, 11, "Clicked _Ptr", NULL, GD_Click, NULL, NULL, (APTR)ClickClicked,
  57.     7, 87, 152, 14, "_Ok", NULL, GD_Ok, NULL, NULL, (APTR)OkClicked,
  58.     161, 87, 152, 14, "_Cancel", NULL, GD_Canc, NULL, NULL, (APTR)CancClicked,
  59.     122, 15, 26, 11, "IDCMP _Handler", NULL, GD_Handler, NULL, NULL, (APTR)HandlerClicked,
  60.     274, 15, 26, 11, "_Key Handler", NULL, GD_KeyHandler, NULL, NULL, (APTR)KeyHandlerClicked,
  61.     122, 27, 26, 11, "_Template", NULL, GD_Template, NULL, NULL, (APTR)TemplateClicked,
  62.     274, 27, 26, 11, "To Lo_wer", NULL, GD_ToLower, NULL, NULL, (APTR)ToLowerClicked,
  63.     7, 67, 306, 14, "_UWORD chip:", NULL, GD_Chip, PLACETEXT_ABOVE, NULL, (APTR)ChipClicked,
  64.     122, 39, 26, 11, "_Smart String", NULL, GD_SmartStr, NULL, NULL, (APTR)SmartStrClicked
  65. };
  66.  
  67. ULONG ConfGTags[] = {
  68.     (GT_Underscore), '_', (GTCB_Scaled), TRUE, (TAG_DONE),
  69.     (GT_Underscore), '_', (GTCB_Scaled), TRUE, (TAG_DONE),
  70.     (GT_Underscore), '_', (TAG_DONE),
  71.     (GT_Underscore), '_', (TAG_DONE),
  72.     (GT_Underscore), '_', (GTCB_Scaled), TRUE, (TAG_DONE),
  73.     (GT_Underscore), '_', (GTCB_Scaled), TRUE, (TAG_DONE),
  74.     (GT_Underscore), '_', (GTCB_Scaled), TRUE, (TAG_DONE),
  75.     (GT_Underscore), '_', (GTCB_Scaled), TRUE, (TAG_DONE),
  76.     (GT_Underscore), '_', (GTST_MaxChars), 24, (TAG_DONE),
  77.     (GT_Underscore), '_', (GTCB_Scaled), TRUE, (TAG_DONE)
  78. };
  79.  
  80. UWORD ScaleX( UWORD FontX, UWORD value )
  81. {
  82.     return(( UWORD )((( FontX * value ) + 4 ) / 8 ));
  83. }
  84.  
  85. UWORD ScaleY( UWORD FontY, UWORD value )
  86. {
  87.     return(( UWORD )((( FontY * value ) + 4 ) / 8 ));
  88. }
  89.  
  90.  
  91. LONG OpenConfWindow( struct Window **ConfWnd, struct Gadget **ConfGList, struct Gadget *ConfGadgets[], struct IE_Data *IE )
  92. {
  93.     UWORD           tc, FontX, FontY;
  94.     struct TextAttr *Attr;
  95.  
  96.     FontY = IE->ScreenData->Screen->RastPort.Font->tf_YSize;
  97.     FontX = IE->ScreenData->Screen->RastPort.Font->tf_XSize;
  98.     Attr = IE->ScreenData->Screen->Font;
  99.  
  100.     if((( ScaleX( FontX, 318 ) + IE->ScreenData->Screen->WBorRight ) > IE->ScreenData->Screen->Width ) ||
  101.         (( ScaleY( FontY, 103 ) + IE->ScreenData->Screen->WBorBottom + IE->ScreenData->YOffset ) > IE->ScreenData->Screen->Height )) {
  102.         Attr = &topaz8_065;
  103.         FontX = FontY = 8;
  104.         }
  105.  
  106.     struct Gadget           *g;
  107.     UWORD                   lc;
  108.     struct NewGadget        ng;
  109.  
  110.     if(!( g = CreateContext( ConfGList )))
  111.         return( 1L );
  112.  
  113.     for( lc = 0, tc = 0; lc < Conf_CNT; lc++ ) {
  114.  
  115.         CopyMem(( char * )&ConfNGad[ lc ], ( char * )&ng, ( long )sizeof( struct NewGadget ));
  116.         ng.ng_VisualInfo = IE->ScreenData->Visual;
  117.         ng.ng_TextAttr = Attr;
  118.         ng.ng_LeftEdge = IE->ScreenData->XOffset + ScaleX( FontX, ng.ng_LeftEdge );
  119.         ng.ng_TopEdge  = IE->ScreenData->YOffset + ScaleY( FontY, ng.ng_TopEdge  );
  120.         ng.ng_Width    = ScaleX( FontX, ng.ng_Width  );
  121.         ng.ng_Height   = ScaleY( FontY, ng.ng_Height );
  122.         ConfGadgets[ lc ] = g = CreateGadgetA((ULONG)ConfGTypes[ lc ], g, &ng, (struct TagItem *)&ConfGTags[ tc ] );
  123.  
  124.         while( ConfGTags[ tc ] ) tc += 2;
  125.         tc++;
  126.  
  127.         if( !g )
  128.             return( 2L );
  129.     }
  130.  
  131.     struct TagItem ConfWTags[] = {
  132.         { WA_Left, 156 },
  133.         { WA_Top, 80 },
  134.         { WA_Width, ScaleX( FontX, 318 ) + IE->ScreenData->XOffset + IE->ScreenData->Screen->WBorRight },
  135.         { WA_Height, ScaleY( FontY, 103 ) + IE->ScreenData->YOffset + IE->ScreenData->Screen->WBorBottom },
  136.         { WA_PubScreen, IE->ScreenData->Screen },
  137.         { WA_Title, (ULONG)"C.generator Config" },
  138.         { WA_Flags, WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_SIMPLE_REFRESH|WFLG_ACTIVATE|WFLG_RMBTRAP },
  139.         { WA_IDCMP, BUTTONIDCMP|CHECKBOXIDCMP|STRINGIDCMP|IDCMP_REFRESHWINDOW|IDCMP_GADGETUP|IDCMP_VANILLAKEY },
  140.         { WA_Gadgets, *ConfGList },
  141.         { TAG_DONE, NULL }
  142.     };
  143.  
  144.     ConfWTags[ WT_LEFT ].ti_Data = (IE->ScreenData->Screen->Width  - ConfWTags[ WT_WIDTH  ].ti_Data) >> 1;
  145.     ConfWTags[ WT_TOP  ].ti_Data = (IE->ScreenData->Screen->Height - ConfWTags[ WT_HEIGHT ].ti_Data) >> 1;
  146.  
  147.     *ConfWnd = OpenWindowTagList( NULL, &ConfWTags[0] );
  148.  
  149.     if(!( *ConfWnd ))
  150.         return( 4L );
  151.  
  152.     GT_RefreshWindow( *ConfWnd, NULL );
  153.     return( 0L );
  154. }
  155.  
  156. void CloseWnd( struct Window **Wnd, struct Gadget **GList )
  157. {
  158.     if( *Wnd ) {
  159.         CloseWindow( *Wnd );
  160.         *Wnd = NULL;
  161.     }
  162.     if( GList ) {
  163.         FreeGadgets( *GList );
  164.         *GList = NULL;
  165.     }
  166. }
  167.  
  168. LONG HandleConfIDCMP( struct Window *ConfWnd, struct IE_Data *IE, struct Gadget *ConfGadgets[] )
  169. {
  170.     struct IntuiMessage    *m;
  171.     BOOL                    (*func)(struct IE_Data *, struct Window *, struct Gadgets **);
  172.     BOOL                    running = 0;
  173.     int                     class;
  174.     short                   code;
  175.     struct Gadget          *addr;
  176.  
  177.     while( m = GT_GetIMsg( ConfWnd->UserPort )) {
  178.  
  179.         class = m->Class;
  180.         code  = m->Code;
  181.         addr  = (struct Gadget *)m->IAddress;
  182.  
  183.         GT_ReplyIMsg( m );
  184.  
  185.         switch( class ) {
  186.  
  187.             case    IDCMP_VANILLAKEY:
  188.                 running = HandleConfKeys( code, IE, ConfGadgets, ConfWnd );
  189.                 break;
  190.  
  191.             case    IDCMP_REFRESHWINDOW:
  192.                 GT_BeginRefresh( ConfWnd );
  193.                 GT_EndRefresh( ConfWnd, TRUE );
  194.                 break;
  195.  
  196.             case    IDCMP_GADGETUP:
  197.                 func = addr->UserData;
  198.                 running = (*func)( IE, ConfWnd, ConfGadgets );
  199.                 break;
  200.  
  201.         }
  202.     }
  203.     return( running );
  204. }
  205.  
  206. BOOL HandleConfKeys( UBYTE Code, struct IE_Data *IE, struct Gadget *Gadgets[], struct Window *Wnd )
  207. {
  208.     BOOL running = 0;
  209.  
  210.     switch( tolower( Code )) {
  211.  
  212.         case    'm':
  213.             running = MsgKeyPressed( IE, Wnd, Gadgets );
  214.             break;
  215.  
  216.         case    'p':
  217.             running = ClickKeyPressed( IE, Wnd, Gadgets );
  218.             break;
  219.  
  220.         case    'o':
  221.             running = OkKeyPressed( IE, Wnd, Gadgets );
  222.             break;
  223.  
  224.         case    'c':
  225.             running = CancKeyPressed( IE, Wnd, Gadgets );
  226.             break;
  227.  
  228.         case    'h':
  229.             running = HandlerKeyPressed( IE, Wnd, Gadgets );
  230.             break;
  231.  
  232.         case    'k':
  233.             running = KeyHandlerKeyPressed( IE, Wnd, Gadgets );
  234.             break;
  235.  
  236.         case    't':
  237.             running = TemplateKeyPressed( IE, Wnd, Gadgets );
  238.             break;
  239.  
  240.         case    'w':
  241.             running = ToLowerKeyPressed( IE, Wnd, Gadgets );
  242.             break;
  243.  
  244.         case    'u':
  245.             if(!( Gadgets[ GD_Chip ]->Flags & GFLG_DISABLED ))
  246.                 ActivateGadget( Gadgets[ GD_Chip ], Wnd, NULL );
  247.             break;
  248.  
  249.         case    's':
  250.             running = SmartStrKeyPressed( IE, Wnd, Gadgets );
  251.             break;
  252.     }
  253.     return( running );
  254. }
  255.